﻿using System;
using Onshi.POS.Modelo.Objetos;
using Onshi.POS.Repositorios;
using Onshi.POS.Usuarios.Vistas;

namespace Onshi.POS.Usuarios
{
    public class UsuarioInicioSesionPresentador
    {
        #region Constructores

        public UsuarioInicioSesionPresentador(IUsuarioInicioSesion vista)
        {
            this.vista = vista;
        }

        #endregion

        #region Atributos

        private IUsuarioInicioSesion vista;

        #endregion

        #region Propiedades

        private RepositorioUsuario RepositorioUsuario
        {
            get { return new RepositorioUsuario(); }
        }

        #endregion

        #region Metodos

        public void Aceptar()
        {
            vista.Autorizado = false;

            if (vista.Nombre.Trim() == String.Empty)
                throw new Exception("El nombre no puede quedar vacio");
            if (vista.Clave.Trim() == String.Empty)
                throw new Exception("La contraseña no puede quedar vacia");
            var usuario = RepositorioUsuario.DevolverPorNombre(vista.Nombre);
            if (usuario == null)
                throw new Exception("Nombre de usuario incorrecto");
            if (usuario.Clave != vista.Clave)
                throw new Exception("Contraseña incorrecta");
            if (usuario.EstaEliminado)
                throw new Exception("Usuario deshabilitado");
            DatosComunes.Usuario = usuario;
            vista.Autorizado = true;
        }

        #endregion
    }
}
